 #include "GamePage.h"
#include <QPainter>
#include <QPushButton>
#include <QTimer>
#include <QKeyEvent>
#include <QLabel>

GamePage::GamePage(QWidget *parent)
    : QWidget(parent), posX(100), posY(300), velocityY(0), gravity(1), jumpPower(-15), score(0) {

    // 创建分数显示标签,分数标签位置
    scoreLabel = new QLabel("Score: 0", this);
    scoreLabel->setGeometry(10, 10, 100, 30);

    // 创建定时器，控制游戏的刷新
    gameTimer = new QTimer(this);
    connect(gameTimer, &QTimer::timeout, this, &GamePage::updateGame);
    gameTimer->start(16);  // 60 FPS

    setFixedSize(800, 600);  // 设置游戏界面大小
    setWindowTitle("Game Page");  // 设置窗口标题

}
void GamePage::startGame() {

    gameTimer->start(16);  // 启动游戏定时器
}

void GamePage::paintEvent(QPaintEvent *event) {
    QPainter painter(this);

    // 绘制背景
    painter.setBrush(Qt::cyan);  // 背景色
    painter.drawRect(0, 0, width(), height());  // 填充背景

    // 绘制角色（蓝色矩形表示）
    painter.setBrush(Qt::blue);
    painter.drawRect(posX, posY, 50, 50);

    // 绘制障碍物（例如平台）
    painter.setBrush(Qt::green);
    painter.drawRect(150, 350, 200, 20);  // 一个简单的平台

    // 绘制其他游戏元素（如敌人、道具等）
    // 此处可以绘制更复杂的元素

    // 绘制分数标签
    scoreLabel->setText("Score: " + QString::number(score));
}

void GamePage::keyPressEvent(QKeyEvent *event) {
    if (event->key() == Qt::Key_Left) {
        posX -= 5;  // 向左移动
    } else if (event->key() == Qt::Key_Right) {
        posX += 5;  // 向右移动
    } else if (event->key() == Qt::Key_Space && posY == 300) {
        velocityY = jumpPower;  // 跳跃
    }
}

void GamePage::updateGame() {
    // 更新角色的垂直位置
    velocityY += gravity;
    posY += velocityY;

    // 如果角色掉到地面，停止下落
    if (posY > 300) {
        posY = 300;  // 到达地面
        velocityY = 0;  // 停止下降
    }

    // 判断角色是否碰到平台
    if (posY == 300 && posX > 150 && posX < 350) {
        // 角色在平台上
        velocityY = 0;
    }

    update();  // 重新绘制界面
}

void GamePage::pauseGame() {
    gameTimer->stop();  // 停止定时器
}
